<?php
declare (strict_types = 1);

namespace app\index\controller;

use think\facade\Request;
use think\facade\View;

class Index
{
    public function index()
    {
        //【访问模式】
        //pathinfo
        //【访问规则】
        //pathinfo访问模式：域名/入口文件/应用/控制器/方法
        // url = http://tp26.com/index.php/index/index/index
        //调用数据库 CURD
        //数据发送至视图
        //【控制器定义】
        //目录使用小写+下划线(对应应用目录)
        //控制器文件采用驼峰法命名(首字母大写)
        //控制器   以.php为后缀
        //命名空间的路径和类库文件所在路径一致
        //控制器类名和文件保持一致，统一采用驼峰法命名(首字母大写)
        //方法的命名使用驼峰法(首字母小写)

        //调试模式  将.example.env文件 改成 .env
//        return '您好！这是一个[index]示例应用';
        // 输出JSON
//        $data=[
//            'id'=>1,
//            'name'=>'张三'
//        ];
//        return json($data);

        //【视图定义】
        //view目录下建立一个对应控制器的文件夹
        //建立一个对应方法的html页    方法名大写转小写加下划线    以.html结尾

        // 渲染默认模板输出
        //默认值渲染对应的html页
        //view渲染视图的助手函数

        //【渲染输出】
        //参数：
        //没有参数时 默认渲染对应的html页
        //1.模板表达式：[应用@] [控制器/] 方法
        //2.变量参数
//        return view('index@index/demo',$data);
//        return View::fetch('index@index/demo',$data);
//        return View::fetch();

        //【url生成】
        //参数：
        //没有参数时     默认生成控制器方法自己本身地址
        //1.地址表达式   [应用/] [控制器/] 方法
        //2.地址栏参数   关联数组
        //3.伪静态后缀   默认true  .html结尾
        //4.域名         默认false
//        echo \think\facade\Route::buildUrl('admin/index/demo',['id'=>1,'name'=>'zx'])
//        ->suffix('.php')
//        ->domain('www.baidu.com');

//        echo url('admin/index/demo',['id'=>1,'name'=>'张三'],'.php','www.baidu.com');
        //【模板赋值】
        //标量    字符串 整型  浮点  布尔值 使用is_scalar函数判断 var_dump(is_scalar($str));
//        $str='tp26';
//        View::assign('str',$str);
//        $data=[
//            'id'=>1,
//            'name'=>'张三'
//        ];
//        View::assign('arr1',$data);
//        $data1=[
//            2,
//            '李四'
//        ];
//        View::assign('arr2',$data1);
//        $data2=[
//            [
//                'id'=>3,
//                'name'=>'张三'
//            ],
//            [
//                'id'=>4,
//                'name'=>'李四'
//            ]
//        ];
//        View::assign('arr3',$data2);
        //对象
//        $obj=new \ stdClass();
//        $obj->id=5;
//        $obj->name='悟能';
//        View::assign("obj",$obj);

        $data=[
            [
                'id'=>1,
                'name'=>'张三'
            ],
            [
                'id'=>2,
                'name'=>'李四'
            ],
            [
                'id'=>3,
                'name'=>'王五'
            ]
        ];
        View::assign('arr',$data);
//        $str='one';
//        View::assign("str",$str);
//        $str1=1;
//        View::assign("str1",$str1);
        $str='thinkphp';
        View::assign('str',$str);
        $time=time();
        View::assign('time',$time);
        $str1="<br />";
        View::assign("str1",$str1);
        $name=1;
        View::assign("name",$name);
        $a=1;
        View::assign("a",$a);
        $b=1;
        View::assign("b",$b);
        //【请求接参】
        $param=Request::param();
        echo "<pre>";
        print_r($param);
        echo "</pre>";
        $controller=Request::controller(true);
        $action=Request::action();
        echo $controller."<br>";
        echo $action."<br>";
        echo Request::get('name','default','htmlspecialchars,trim,strip_tags');
        echo Request::method()."<br>";
        echo var_dump(Request::isGet());
        echo var_dump(Request::isPost())."<br>";
        echo var_dump(Request::has('id','get'));
        $gets=Request::get('id');
        echo "<pre>";
        print_r($gets);
        echo "</pre>";

//        return view();
    }

    public function demo()
    {
        //url = http://tp26.com/index.php/index/index/demo
        return 'index/index/demo';
    }
}
